23

» WarCraft 3 / Как проверить класификацию юнита?

Похожие вопросы:

ответ
через if else или свитч конструкцию, или написать свою функцию, которая будет принимать юнита, а возвращать string
типа такого:
function PrintType takes unit u returns string
local string s =""
if IsUnitType(u,UNIT_TYPE_ANCIENT) then
s="ANCIENT"
elseif IsUnitType(u,UNIT_TYPE_ATTACKS_FLYING) then 
s="ATTACKS_FLYING"
endif
return s
endfunction
и добавляешь все свои типы через elseif которые хочешь поймать.... самый простейший вариант и 10 возможных =)

23

» WarCraft 3 / Ошибка в способности

Похожие вопросы:

ответ
проверь настройки A01P, возможно, там кривые данные выше 3-го уровня
ответ
Kanteu, у тебя в описаниях стоит код AUdc, тебе нужно его заменить на равкод твоей способности. Чтобы его узнать, выдели способность и нажми Ctrl+D. Перед двоеточием будет равкод способности.
ответ
МодификаторПал я так понимаю число, а не юнит...
local unit u
local real r
Это конкретно по ошибке... а вообще - не надо смотреть видео от этого человека, он тебя плохому научит... правда. А другим потом придётся тебя переучивать, если ты сам это дело не забросишь
ответ
краш пропал сам собой, после смены варика. КАЧАЙТЕ ДЕФОЛТНЫЙ ВАРИК БЕЗ миксов и всякой дряни!
ответ
ArhiMEN, скинь карту или опиши как должен выглядеть спелл и я сделаю тебе пример в свободное время

23

» WarCraft 3 / Смена названия предмета

Похожие вопросы:

ответ
можно либо заменять юнита, либо химичить с тексттагами(то есть сделать систему имен игровых обьектов на тексттагах), ещё есть функция для смены имени игрока
код
native SetPlayerName            takes player whichPlayer, string name returns nothing
предметам имена изменять нельзя
способности могут быть с таким же успехом удалены, добавлены
этим
native UnitAddAbility               takes unit whichUnit, integer abilityId returns boolean

native UnitRemoveAbility            takes unit whichUnit, integer abilityId returns boolean
подробнее насчет предметов, думаю можно похимичить с кастом велью, устанавливать его
функциями
native          SetItemUserData takes item whichItem, integer data returns nothing

native          GetItemUserData takes item whichItem returns integer
и
функциями
native S2I  takes string s returns integer

native I2S  takes integer i returns string
конвертировать, потом выводить строки на экран через
это
native DisplayTextToPlayer          takes player toPlayer, real x, real y, string message returns nothing
с таким же успехом можно использовать хеш-таблицы, для аттача описания к чему-либо.
Ещё есть вариант, с описанием предметов и способностей в квестах.
В общем без гемора, и написания левых систем никак)
ответ
SweetFox, я бы просто добавлял и удалял способность при получении/потери итема, там оно вроде уже без выкрутасов будет работать)

23

» WarCraft 3 / Эффект строительства зданий

Похожие вопросы:

ответ
"скорости анимации" не нашел
типо такого?
ответ
AlexSan, делаем бд и по событию пишем данные в бд
подробнее в статьях
если хочешь красиво то делай свой вар с картами и эльфийками
ответ
что бы она сразу перешла в режим наведения.. а то выглядит как баг, из-за которого надо нажимать по 2 раза...
Gui -> Force player to use X key
Согласовываешь с хоткеем строительства
======================================
Бафф имеется в виду Бафф или Спецэффект?
Если спецэффект:
DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl",u,"origin"))
Если баф, то возможно будет работать так:
call UnitAddAbility(u, 'buff')

23

» WarCraft 3 / Переменная строка

Похожие вопросы:

ответ
common.j
-- String Utility API

---@param i integer
---@return real
function I2R(i) end

---@param r real
---@return integer
function R2I(r) end

---@param i integer
---@return string
function I2S(i) end

---@param r real
---@return string
function R2S(r) end

---@param r real
---@param width integer
---@param precision integer
---@return string
function R2SW(r, width, precision) end

---@param s string
---@return integer
function S2I(s) end

---@param s string
---@return real
function S2R(s) end

---@param h handle
---@return integer
function GetHandleId(h) end

---@param source string
---@param start integer
---@param ending integer
---@return string
function SubString(source, start, ending) end

---@param s string
---@return integer
function StringLength(s) end

---@param source string
---@param upper boolean
---@return string
function StringCase(source, upper) end

---@param s string
---@return integer
function StringHash(s) end


---@param source string
---@return string
function GetLocalizedString(source) end

---@param source string
---@return integer
function GetLocalizedHotkey(source) end
ответ
ProximityCat, pld файл - это файл, что ты прелоадишь. В нём должен быть вызов только функции ExecuteFunc, которая вызывает другую функцию из карты.
ответ
Eternal soul,
Способ что предложил я - вы формируете БД и далее циклом пробегаетесь по массиву unit_type_string[i] и сравниваете его с вашей строкой. Если сравнение прошло успешно то по индексу unit_type[i] находите нужного юнита. Конечно конвертировать было бы более проффесионально, но это способ тоже будет работать.
ответ
TriggerRegisterVariableEvent
Абсолютно бесполезная шутка, и в луа может не работать. Меняете значение переменной, вызывайте сразу нужные действия.

23

» WarCraft 3 / Проблемы с синхронизацией кэша

Похожие вопросы:

ответ
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.

23

» WarCraft 3 / Как правильно написать GetUnitState ?

Похожие вопросы:

ответ
У тебя событие в триггере неверное. Ты указал, что юнит атакован, а необходимо событие, что юнит получает урон.
ответ
function PolarProjectionX takes real x, real dist, real angle returns real
    return x + dist * Cos(angle * bj_DEGTORAD)
endfunction

function PolarProjectionY takes real y, real dist, real angle returns real
    return y + dist * Sin(angle * bj_DEGTORAD)
endfunction

function Trig_Hit_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local real face = GetUnitFacing(caster)
    local real x = PolarProjectionX(GetUnitX(caster), 100., face)
    local real y = PolarProjectionY(GetUnitY(caster), 100., face)
    local group targets = CreateGroup()
    local unit target
    call GroupEnumUnitsInRange(targets, x, y, 100., null)
    set target = FindClosestToXY(targets, x, y)
    if target != null then
        call UnitDamageTargetBJ(caster, target, 100., ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL)
        set target = null
    endif
    set caster = null
    call DestroyGroup(targets)
    set targets = null
endfunction
DopaMine, у тебя нет вызова FindClosestUnitXY.
ответ
VinerX, посмотри гуи функцию "пропустить остальные действия" по факту это слово "return" в коде, то есть после ретурна ты никак не поставишь set newUnit = null, и правильно это делать после set bj_lastReplacedUnit = newUnit, а возвращать не newUnit, а bj_lastReplacedUnit, вот код если непонятно
set bj_lastReplacedUnit = newUnit
set newUnit = null
set oldUnit = null
set indexItem = null
return bj_lastReplacedUnit

23

» WarCraft 3 / Не открывается кампания и карта

Похожие вопросы:

ответ
~8gabriel8:
Не знаю почему, но после нескольких попыток открыть карту в mpq-редакторе, файлы текстур появились, я их заменил и карта открылась.
ответ
Скорее всего какая то ошибка в Jass коде.
ответ
Нельзя. Потому что даже в твоей сугубо триггерной карте, когда запускается команда на исполнение все конвертируется в jass/( Когда ты играешь или проверяешь карту)
Триггер . лишь графическая оболочка, как бы кубики на которых написаны буквы, но все-равно все происходит на jasse ( уже иногда на lua)
Короче нельзя. скачивай jngp и учи хотя бы простые джассовые команды.
Хотя даже зная его взломанная карта часто выкладывает огромный набор проограмного кода без разделения где конкретный текстовый триггер инициализации или определенного дейсвтия.
ответ
У меня была такая проблема хрен знает сколько лет назад. Но она была один раз, возможно тоже из-за сбоя

23

» WarCraft 3 / Свой набор звуков

Похожие вопросы:

ответ
Да чего угодно, хоть дефолтным проигрывателем виндовс.
А так есть adobe audacity и аналоги, для записи и редактирования звуков, а так же сохранении их в нужный формат, игра использует для фраз юнитов звуки формата *.wav, хотя и от *.mp3 файлов не откажиться.
ответ
Закрыто.
ответ
Мб озвучки просто отменили
Учитывая, что под контроль игрока эти юниты никогда не давались, разумно решили - не самое важное
ответ
Да тут недавно статейка была, поищи на сайте.
ответ
Ошибаетесь, дело и в звуках, и в WC3. Просто WC3 проигрывает звуки не выше определённой частоты, это обнаружил aws, когда импортировал звуки в WC3.

23

» WarCraft 3 / Иконка Тралла

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Число вставленных изображений: 0, а требуется не менее 1
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
Count of inserted images is: 0, but required not less than 1
// CID3
23

» WarCraft 3 / Решения проблемы с Картой

Похожие вопросы:

ответ
JGNP используй
ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.
ответ
На сайте Hive на карте написано текущая версия.
Скорее всего карта для последних патчей, где есть новые нативки.
ответ
~8gabriel8:
Скорее всего вылет в главное меню обусловлен не исполняемостью кода. Часто это может быть по причине того, что в пути к карте есть кириллица, например, когда карта на Рабочем столе или в папке Загрузки. В связи с этим уже давно почти все карты держу в корне диска C:\.
ответ
XGM Bot:
Похожие вопросы:

ответ
путь к текстуре прописывать правильно надо
текстура должна хранится в new.mix без подпапок
ответ
либо юзай мдлвиз как все белые люди
ответ
У модели не выбрано текстурка которая отвечает за ...я забыл как это называется. Аля погребального огня или что-то того. Оказалось трём материалам не дали текстур, я поправил. Сначала проверь работает ли в игре, а потом смело меняй с заменой у себя в папке.
ответ
прочитать правила импорта текстур, которые пишут рядом с моделью
чаще всего нужно удалить все строки в импорте, чтобы осталось TextureName.blp
ответ
Держи. Там были использованы несколько лишних текстур (я так понимаю из вова).
Один вопрос, тупа интересна - что ты делал? "Чего только не делал, однако всё об стенку горох."


23

» WarCraft 3 / Функция не возвращает unit

Похожие вопросы:

ответ
Написать return false
ответ
bj убери для начала
[code]
function ret takes unit m,unit u returns nothing
local location lm=GetUnitLoc(m)
local location lu=GetUnitLoc(u)
local real dx=GetLocationX(lm) - GetLocationX(lu)
local real dy=GetLocationY(lm) - GetLocationY(lu)
local real r=SquareRoot(dx*dx+dy*dy)
if r>=1000 then
call IssuePointOrderLoc( u, "move", lm )
endif
call RemoveLocation(lm)
call RemoveLocation(lu)
endfunction
[/code]
m-мама
u-юнит
ответ
На хайве получил ответ, надо было писать evaluate
ответ
Независимо от того SaveReal там или SaveUnitHandle, ты записываешь значения в одну и ту же таблицу.
Ты просто SaveReal(h, id, 0, x_c) перезаписываешь этим - SaveUnitHandle(h, id, 0, u_c) и этим - SaveEffectHandle(h, id, 0, e)
ответ
зачем внешние очишаеш структуру?
Порой это нужно.

Замени GetTriggerUnit() на GetSpellAbilityUnit().
ApaxHoqpuJL:
call SetUnitAnimationReverseFollowed(u, 3, 1, 1, true, FollowUpFunc.AnimationTimerFollowup, animData)
А это что такое? Что за FollowUpFunc.AnimationTimerFollowup?

23

» WarCraft 3 / Не меняется рельеф

Похожие вопросы:

ответ
Меньше чем -128 ты ландшафт НИКАК ВООБЩЕ НЕ опустишь (хотя, можешь перепилить движок варика).
ответ
сразу видно, человек с большим опытом редактора
ответ
текстуры склона заменяются путями ReplaceableTextures\Cliff\Cliff0.blp и ReplaceableTextures\Cliff\Cliff1.blp
ответ
~8gabriel8:
А в игре тоже поменялось или только в редакторе?
ответ
+- GetLocationZ(Ltargetpoint)

23

» WarCraft 3 / Урон и заклинания при помощи триггеров

Похожие вопросы:

ответ
юнит получает урон
1 ответ на 2 вопроса
ответ
События в помощь. Почитайте про событийно-ориентированные языки программирования. Jass является таким
ответ
Sicre, только на 1 вопрос будем отвечать в этой теме, у тебя за убийство все пачки или за каждого юнита отдельный дроп?
Если за каждого, то по событию юнит определённого типа умирает, создвай предмет в точке смерти, можно также прописать шанс.
Если же ты работаешь с группой и даёшь общую награду за смерть группы, тогда надо группу создать, обозвать её например (пауки у фантана), добавить туда юнитов, и отслеживать смерть всей группы, ну и так будет каждый раз собственно

23

» WarCraft 3 / Ошибка при сохранение карты

Похожие вопросы:

ответ
приходиться угадывать
так не поймешь, чего у тебя там не работает. Опиши ПОДРОБНО чего сделать не так, что она не работает. раньше работала?
Скидывай скрин ошибки, карту. В папке варкрафт есть папка "Errors" там текстовик нужно найти.
предположение
Пробовал выключить или временно удалить все триггеры? если без триггеров нормально работает - вывод?
похоже автор какую-нибудь карту открыл, отредактировал ландшафт. Она там мб, к примеру, на cjass написано. попробуй xgm.guru/p/wc3/178775 Если ошибка будет на jngp, там есть в папке jngp есть папка "logs" тоже ошибки хранит
Еще может быть нужно включить UMS. Даже, если без триггеров не сохраняет, возможно какие-нибудь за какие-нибудь ограничения (кол-во деревьев, размер карты и прочее).
ответ
Объект current не является объектом структуры.
ответ
Попробуй мою версию, там ScExp должен работать. Но это для вц3 1.24 и ниже

По scexp можешь прочекать разницу в wehack.lua с твоим jngp

xgm.guru/p/wc3/jassnewgenpack-r вот тут последняя сборка jngp с модулем scexp
ответ
Проверь, что бы в пути к редактору, не было русской кириллицы. Jngp её не переваривает.
ответ
В редакторе ландшафта в меню cJass отключи все галки.

23

» Администрация XGM / Оскорбление в дискорде

Похожие вопросы:

ответ
Не оскорбление, но за троллинг сойти может, давайте заканчивайте детский сад. Новый год подходит, съешьте лучше мандаринку 🍊

23

» WarCraft 3 / Задержка в карте.

Принятый ответ
Похожие вопросы:

ответ
Утечки в триггерах, надо код карты исправить.
ответ
ALL_Remove = false
чтотооченьважное
ALL_Remove = true
как сложно то было
ответ
darkoms, исходные позиции я уже выставил, но это не важно
просто вносишь нужные изменения в карте, сохраняешь в редакторе
потом берешь оптимизируешь с Vexorian Map Optimizer
и открываешь уже в варкрафте

галочки в оптимизиаторе как на скриншоте

23

» WarCraft 3 / OrderId2String

Похожие вопросы:

ответ
Функция не передаёт ни каких данных в переменную.
ты ошибаешься
OrderId2String('Aeye') возвращает "" (пустая строка) т.к. приказ 'Aeye' не имеет строкового представления
"order=" + "" = "order="
всё работает
ответ
NewToJass, vjass это диалект
он ничего не убирает а лишь дополняет
если в vjass чтото не работает то и в jass это тоже не работает
ответ
GetSpellAbilityId( )
ответ
Нашёл причину вылета.
У героя был Спеллбук, в спеллбуке была пассивная способность аура "Боевой марш". В процессе игры герой умирал и воскрешался. Если после воскрешения сохраниться и загрузиться вновь, то вылетает с ошибкой.
Исправил следующим образом. Отследил сохранения и в этом триггере отключал все пассивки в Спелбуке (SetPlayerAbilityAvaible() на false). Через малое время после сохранения вновь их активирую.